package baidumapsdk.demo;

import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

import org.json.JSONArray;
import org.json.JSONObject;

import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

import com.baidu.mapapi.map.BaiduMap;
import com.baidu.mapapi.map.HeatMap;
import com.baidu.mapapi.map.MapStatusUpdateFactory;
import com.baidu.mapapi.map.MapView;
import com.baidu.mapapi.model.LatLng;

/**
 * 热力图功能demo
 */
public class HeatMapDemo extends Activity {
	@SuppressWarnings("unused")
	private static final String LTAG = BaseMapDemo.class.getSimpleName();
	private MapView mMapView;
	private BaiduMap mBaiduMap;
	private HeatMap heatmap;
	private Button mAdd;
	private Button mRemove;
	private boolean isDestroy;
	
	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_heatmap);
		Log.i("LTAG", "LTAG"+LTAG);
		
		mMapView = (MapView) findViewById(R.id.mapview);
		mBaiduMap = mMapView.getMap();
		mBaiduMap.setMapStatus(MapStatusUpdateFactory.zoomTo(14));
		mAdd = (Button) findViewById(R.id.add);
		mRemove = (Button) findViewById(R.id.remove);
		mAdd.setEnabled(false);
		mRemove.setEnabled(false);
		mAdd.setOnClickListener(new OnClickListener() {
			public void onClick(View v) {
				addHeatMap();
			}
		});
		mRemove.setOnClickListener(new OnClickListener() {
			public void onClick(View v) {
				heatmap.removeHeatMap();
				mAdd.setEnabled(true);
				mRemove.setEnabled(false);
			}
		});
		addHeatMap();
	}

	private void addHeatMap() {
		final Handler h = new Handler() {
			@Override
			public void handleMessage(Message msg) {
				super.handleMessage(msg);
				if(!isDestroy){
					mBaiduMap.addHeatMap(heatmap);
				}
				mAdd.setEnabled(false);
				mRemove.setEnabled(true);
			}
		};
		new Thread() {
			@Override
			public void run() {
				super.run();
				List<LatLng> data = getLocations();
				heatmap = new HeatMap.Builder().data(data).build();
				h.sendEmptyMessage(0);
			}
		}.start();
	}

	@Override
	protected void onPause() {
		super.onPause();
		// activity 暂停时同时暂停地图控件
		mMapView.onPause();
	}

	@Override
	protected void onResume() {
		super.onResume();
		// activity 恢复时同时恢复地图控件
		mMapView.onResume();
	}

	@Override
	protected void onDestroy() {
		super.onDestroy();
		isDestroy = true;
		// activity 销毁时同时销毁地图控件
		mMapView.onDestroy();
	}

	private List<LatLng> getLocations() {
		List<LatLng> list = new ArrayList<LatLng>();
		InputStream inputStream = getResources().openRawResource(R.raw.locations);//读取坐标信息locations.json
		String json = new Scanner(inputStream).useDelimiter("\\A").next();
		JSONArray array;
		try {
			array = new JSONArray(json);
			for (int i = 0; i < array.length(); i++) {
				JSONObject object = array.getJSONObject(i);
				double lat = object.getDouble("lat");
				double lng = object.getDouble("lng");
				list.add(new LatLng(lat, lng));
			}
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return list;
	}

}

//
//import java.io.InputStream;
//import java.util.ArrayList;
//import java.util.List;
//import java.util.Scanner;
//
//import org.json.JSONArray;
//import org.json.JSONObject;
//
//import android.app.Activity;
//import android.os.Bundle;
//import android.os.Handler;
//import android.os.Message;
//import android.util.Log;
//import android.view.View;
//import android.view.View.OnClickListener;
//import android.widget.Button;
//import android.widget.TextView;
//
//import com.baidu.location.LocationClient;
//import com.baidu.location.LocationClientOption;
//import com.baidu.location.LocationClientOption.LocationMode;
//import com.baidu.mapapi.map.BaiduMap;
//import com.baidu.mapapi.map.HeatMap;
//import com.baidu.mapapi.map.MapStatus;
//import com.baidu.mapapi.map.MapStatusUpdate;
//import com.baidu.mapapi.map.MapStatusUpdateFactory;
//import com.baidu.mapapi.map.MapView;
//import com.baidu.mapapi.model.LatLng;
//
///**
// * 热力图功能demo
// */
//public class HeatMapDemo extends Activity {
//	@SuppressWarnings("unused")
//	private static final String LTAG = BaseMapDemo.class.getSimpleName();
//	private MapView mMapView;
//	private BaiduMap mBaiduMap;
//	private HeatMap heatmap;//热力图
//	private Button mAdd;
//	private Button mRemove;
//	private boolean isDestroy;
//	
//	private LocationClient mLocationClient;//定位SDK的核心类
//	
//	@Override
//	public void onCreate(Bundle savedInstanceState) {
//		super.onCreate(savedInstanceState);
//		setContentView(R.layout.activity_heatmap);
//		Log.i("charttest","*****************进入HeatMapDemo*********************");
//		
//		LocationClientOption option = new LocationClientOption();
//        option.setLocationMode(LocationMode.Hight_Accuracy);//设置高精度定位定位模式
//        option.setCoorType("bd09ll");//设置百度经纬度坐标系格式
//        option.setScanSpan(1000);//设置发起定位请求的间隔时间为1000ms
//        option.setIsNeedAddress(true);//反编译获得具体位置，只有网络定位才可以
//        mLocationClient.setLocOption(option);
//		
////		 mLocationClient = ((LocationApplication)getApplication()).mLocationClient;
////         
////	        LocationResult = (TextView)findViewById(R.id.textView1);
////	         ((LocationApplication)getApplication()).mLocationResult = LocationResult;//调用LocationApplication，获得需要的信息
////	        startLocation = (Button)findViewById(R.id.addfence);
////	        startLocation.setOnClickListener(new OnClickListener() {
////	             
////	            public void onClick(View v) {
////	                InitLocation();//初始化
////	                if(startLocation.getText().equals("开启定位")){
////	                    mLocationClient.start();
////	                    startLocation.setText("停止定位");
////	                }else{
////	                    mLocationClient.stop();
////	                    startLocation.setText("开启定位");
////	                }
////	            }
////	        });
//		
//		mMapView = (MapView) findViewById(R.id.mapview);//一个显示地图的视图（View）
//		mBaiduMap = mMapView.getMap();//获取地图控制器，里面定义了地图对象的操作方法和接口
//		
//		//设定中心点坐标 
//        LatLng cenpt = new LatLng(30.523707,114.366993); 
//        //定义地图状态
//        MapStatus mMapStatus = new MapStatus.Builder()
//        .target(cenpt)
//        .zoom(18)
//        .build();
//        //定义MapStatusUpdate对象，以便描述地图状态将要发生的变化
//
//
//        MapStatusUpdate mMapStatusUpdate = MapStatusUpdateFactory.newMapStatus(mMapStatus);
//        //改变地图状态
//        mBaiduMap.setMapStatus(mMapStatusUpdate);
//		
////		mBaiduMap.setMapStatus(MapStatusUpdateFactory.zoomTo(5));//改变地图状态，设置地图的缩放级别
//		mAdd = (Button) findViewById(R.id.add);
//		mRemove = (Button) findViewById(R.id.remove);
//		mAdd.setEnabled(false);
//		mRemove.setEnabled(false);
//		mAdd.setOnClickListener(new OnClickListener() {
//			public void onClick(View v) {
//				addHeatMap();
//			}
//		});
//		mRemove.setOnClickListener(new OnClickListener() {
//			public void onClick(View v) {
//				heatmap.removeHeatMap();
//				mAdd.setEnabled(true);
//				mRemove.setEnabled(false);
//			}
//		});
////		addHeatMap();
//	}
//
//	private void addHeatMap() {
//		final Handler h = new Handler() {
//			@Override
//			public void handleMessage(Message msg) {
//				super.handleMessage(msg);
//				if(!isDestroy){
//					mBaiduMap.addHeatMap(heatmap);
//				}
//				mAdd.setEnabled(false);
//				mRemove.setEnabled(true);
//			}
//		};
//		new Thread() {
//			@Override
//			public void run() {
//				super.run();
//				List<LatLng> data = getLocations();//LatLng(纬度，精度)，地理坐标基本数据结构
//				heatmap = new HeatMap.Builder().data(data).build();
//				h.sendEmptyMessage(0);
//			}
//		}.start();
//	}
//
//	@Override
//	protected void onPause() {
//		super.onPause();
//		// activity 暂停时同时暂停地图控件
//		mMapView.onPause();
//	}
//
//	@Override
//	protected void onResume() {
//		super.onResume();
//		// activity 恢复时同时恢复地图控件
//		mMapView.onResume();
//	}
//
//	@Override
//	protected void onDestroy() {
//		super.onDestroy();
//		isDestroy = true;
//		// activity 销毁时同时销毁地图控件
//		mMapView.onDestroy();
//	}
//
//	private List<LatLng> getLocations() {
//		List<LatLng> list = new ArrayList<LatLng>();
//		InputStream inputStream = getResources().openRawResource(R.raw.locations);
//		String json = new Scanner(inputStream).useDelimiter("\\A").next();
//		JSONArray array;
//		try {
//			array = new JSONArray(json);
//			for (int i = 0; i < array.length(); i++) {
//				JSONObject object = array.getJSONObject(i);
//				double lat = object.getDouble("lat");
//				double lng = object.getDouble("lng");
//				list.add(new LatLng(lat, lng));
//			}
//		} catch (Exception e) {
//			// TODO Auto-generated catch block
//			e.printStackTrace();
//		}
//		return list;
//	}
//
//	
//	@Override
//    protected void onStop() {
//        mLocationClient.stop();
//        super.onStop();
//    }
// 
//    private void InitLocation(){
//        LocationClientOption option = new LocationClientOption();
//        option.setLocationMode(LocationMode.Hight_Accuracy);//设置高精度定位定位模式
//        option.setCoorType("bd09ll");//设置百度经纬度坐标系格式
//        option.setScanSpan(1000);//设置发起定位请求的间隔时间为1000ms
//        option.setIsNeedAddress(true);//反编译获得具体位置，只有网络定位才可以
//        mLocationClient.setLocOption(option);
//    }
//}
